package com.zmn.oms.model.vo.work;

import com.zmn.consts.GlobalConsts;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 类描述：啄木鸟运营-派单
 *
 * @author lujia
 * @date 2018/12/01 11:43
 */
@Data
public class ZsOrderDistributeVO implements Serializable {

    private static final long serialVersionUID = -5065137938260423384L;

    /**
     * 工程师ID
     */
    private Integer masterId;

    /**
     * 工程师名称
     */
    private String masterName;

    /**
     * 工程师电话
     */
    private String masterPhone;

    /**
     * 工程师头像
     */
    private String avatarSrc;

    /**
     * 最大接单数量
     */
    private int maxReceiveNumber;

    /**
     * 最大手头单
     */
    private int maxHandCount;

    /**
     * 描述: 最大日手头单
     **/
    private Integer maxDayHandNumber;

    /**
     * 描述: 每日新单派单量
     **/
    private Integer dailyNewOrders;

    /**
     * 描述: 最大拉修待件进行中单量
     **/
    private Integer maxRasshuPpartsNumber;

    /**
     * 距离
     */
    private Double distance;

    /**
     * 今日新单派单量
     */
    private int distributeNewCount;

    /**
     * 昨日新单派单量
     */
    private int yesterdayDistributeNewCount;

    /**
     * 当日新单
     */
    private int datumDistributeCount;

    /**
     * 当日手头单
     */
    private int datumDoingCount;

    /**
     * 今派今约
     */
    private int datumDistributeDutyCount;

    /**
     * 往日派单
     */
    private int datumPastDistributeCount;

    /**
     * 今日成功
     */
    private int todaySuccessCount;

    /**
     * 手头单
     */
    private int handCount;

    /**
     * 手头单占比
     */
    private int handCountRatio;

    /**
     * 手头返修单 (返修-进行中不含待件&拉修)
     */
    private int handReworkCount;

    /**
     * 当月返修他人单 (返修单源单工程师不是自己)
     */
    private int monthReworkCount;

    /**
     * 单时比
     */
    private int datumOrderHourRatio;

    /**
     * 拉修待件数量
     */
    private int deliveryAndWaitPartCount;

    /**
     * 网格外派单量
     */
    private Integer outGridCount;

    /**
     * 跨网格派单量
     */
    private Integer sysAcrossGridCount;

    /**
     * 昨日倾斜派单量
     */
    private Integer yesterdayTiltDistributeCount;

    /**
     * 家电突破派单量
     */
    private Integer breakoutDistributeCount;

    /**
     * 昨日家电突破派单量
     */
    private Integer yesterdayBreakoutDistributeCount;

    /**
     * 成功率
     */
    private Integer successRate = 0;
    /**
     * 上门率
     */
    private Integer visitRate = 0;
    /**
     * 平均客单价
     */
    private Integer atvAvg = 0;
    /**
     * 服务分
     */
    private Integer compositeScore = 0;

    /**
     * 改派轮次值
     */
    private Integer redistributeCount = 0;

    /**
     * 虚假改派分
     */
    private Integer falseRedistributeScore = 0;

    /**
     * 虚假取消分
     */
    private Integer falseCancelScore = 0;

    /**
     * 返修催单数
     */
    private Integer reworkReminderCount = 0;

    /**
     * 返修(他人)奖励轮次
     */
    private Integer reworkOtherRewardCount = 0;

    /**
     * 系统推荐分
     */
    private double recommendScore;

    private Double masterLat;
    private Double masterLng;
    private Integer skillServCategoryId;
    private String skillServCategoryName;
    private Integer skillCategoryId;
    private String skillCategoryName;

    /**
     * 主技能id
     */
    private String mainSkillId;

    /**
     * 主技能名称
     */
    private String mainSkillName;

    // 工程师状态
    private Integer engineerStatus;
    private String engineerStatusName;

    /**
     * 工程师oa状态
     */
    private Integer oaStatus;

    /**
     * 直营(1)/非直营(2)
     */
    private Integer agent;

    /**
     * 工作网格类型：1主网格，2副网格
     */
    private Integer workspaceType;

    /**
     * 副网格数量(临时功能字段)
     */
    private Integer slaveGridCount;

    /**
     * 派单规则
     */
    private int distributeRule;

    /**
     * 派单规则名称
     */
    private String distributeRuleTitle = "";

    /**
     * 派单规则文案
     */
    private String distributeRuleText = "";

    /**
     * 派单关联工单文案
     */
    private String distributeRelateWorkText;

    /**
     * APP&位置是否在线
     */
    private Integer onlineStatus;

    /**
     * 是否在服务范围内
     */
    private Integer scopeStatus;

    /**
     * 能力列表
     */
    private List<ZsOrderDistributeExpandAbilityVO> abilityList;

    /**
     * 大促工人 1 否 2 是
     */
    private Integer bigPromotion;

    /**
     * 黑名单状态 1 否 2 是
     */
    private Integer blackList;

    /**
     * 飞单状态 1 否 2 是
     */
    private Integer degradation;

    /**
     * vip工人 1 否 2 是
     */
    private Integer vip;

    /**
     * 服务商id
     */
    private Integer spId;

    /**
     * 服务商名称
     */
    private String spName;

    /**
     * 新手标签(true:是；false:否)
     */
    private Boolean novice;

    /**
     * 星级
     */
    private Double starLevelScore;

    /**
     * 渠道专属(true:是；false:否)
     */
    private Boolean channelExclusive;

    /**
     * 检查子公司
     */
    private Boolean checkCompanyId;

    /**
     * 检查最大返修单
     */
    private Boolean checkMaxReworkCount;

    /**
     * 检查最大返修单催单数
     */
    private Boolean checkMaxReworkReminderCount;

    /**
     * 检查服务范围
     */
    private Boolean checkServiceScope;

    /**
     * 检查直营|在线
     */
    private Boolean checkAgentOnline;

    /**
     * 检查主技能
     */
    private Boolean checkMainSkill;

    /**
     * 检查最大手头单
     */
    private Boolean checkMaxHandCount;

    /**
     * 检查最大当日手头单
     */
    private Boolean checkMaxDayHandNumber;

    /**
     * 检查每日新单派单量
     */
    private Boolean checkDistributeNewCount;

    /**
     * 检查最大拉修待件数量
     */
    private Boolean checkMaxDeliveryAndWaitPartCount;

    /**
     * 检查动态库存
     */
    private Boolean checkStock;

    /**
     * 检查绑定网格
     */
    private Boolean checkBindGridCount;

    /**
     * 工程师状态是否满足
     */
    private Boolean checkEngineerStatus;

    /**
     * 工程师技能是否满足
     */
    private Boolean checkEngineerSkill;

    /**
     * 订单工程师类型  1：主师傅 2：从师傅
     */
    private Integer orderEngineerType;

    /**
     * 优先类型 1源单 2最新返修单
     */
    private Integer priorityType;

    /**
     * 星级
     * @since 工程师重构，删除星级标志
     */
    @Deprecated
    private Integer starLevel = GlobalConsts.ZERO;

    /**
     * 公司ID
     */
    private Integer companyId;

    /**
     * 库存试点工程师
     */
    private boolean useStock;

    /**
     * 库存类型：参见MasterStockTypeEnum // 最优 OPTIMAL_STOCK(0), // 有库存 HAVE_STOCK(1),  // 无库存 NO_STOCK(2),
     */
    private Integer stockType;

    /**
     * 产品组ID
     */
    private Integer productGroupId;

    /**
     * 排班工时-单位为分钟
     */
    private Integer scheduleHours;

    /**
     * 睡懒觉（休息）工时【停单时间+请假时间】-单位为分钟
     */
    private Integer sleepHours;

    /**
     * 工作工时【排班工时-休息工时】-单位为分钟
     */
    private Integer workingHours;

    /**
     * 派单网格：1网格外，2网格内，3跨网格
     */
    private Integer distributeGrid;

    /**
     * 工程师中心点
     */
    private Double orderCenterLat;
    private Double orderCenterLng;

    /**
     * 工程师中心点距离
     */
    private Double orderCenterDistance;

    /**
     * 优质工程师 1：否 2：是
     */
    @Deprecated
    private Integer excellentFlag;

    /**
     * 是否新手 1 否 2 是 默认非新手
     */
    private Integer noviceStatus = 1;

    /**
     * 分组类别
     */
    private Integer groupId = 0;

    /**
     * 高等级工程师 1：否 2：是
     */
    @Deprecated
    private Integer highGradeFlag;

    /**
     * 失败原因code值
     */
    private Integer failReasonCode;

    /**
     * 相邻网格，true是，false否
     */
    private Boolean adjoinGrid;

    /**
     * 工程师分层管理等级：1.V1 2.V2 3.V3 ...
     */
    private Integer hierarchyLevel;

    /**
     * 工程师 优先级/层级（派单配置决定 越小优先级越高 最大11层）
     */
    private Integer priority = 11;

    /**
     * 分层排序单量 = 当日新单量+自然周新单+当日请假停单虚拟单量+自然周请假停单虚拟单量-（自然周开始到今日的总保护单量）
     */
    private Integer hierarchySortCount = 0;

    /**
     * 自然周新单派单量
     */
    private Integer natureWeekDistributeNewCount;

    /**
     * 自然周请假停单虚拟单量
     */
    private Integer sleepVirtualCount;

    /**
     * 当日请假停单虚拟单量
     */
    private Integer todaySleepVirtualCount;

}
